package com.xiyi_design.printer_manage.pub;

import org.springframework.util.DigestUtils;

import java.security.MessageDigest;
import java.util.Random;

public class MD5Util {
    public static void main(String[] args) {
        String s = getMD5("123");
        System.out.println(s);
        boolean verify = verify("123", s);
        System.out.println(verify);
    }
   //生成MD5
    public static String getMD5(String message) {
        String md5 = "";
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");  // 创建一个md5算法对象
            byte[] messageByte = message.getBytes("UTF-8");
            byte[] md5Byte = md.digest(messageByte);              // 获得MD5字节数组,16*8=128位
            md5 = bytesToHex(md5Byte);                            // 转换为16进制字符串
        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5;
    }
   
     // 二进制转十六进制
    public static String bytesToHex(byte[] bytes) {
        StringBuffer hexStr = new StringBuffer();
        int num;
        for (int i = 0; i < bytes.length; i++) {
            num = bytes[i];
             if(num < 0) {
                 num += 256;
            }
            if(num < 16){
                hexStr.append("0");
            }
            hexStr.append(Integer.toHexString(num));
        }
        return hexStr.toString().toUpperCase();
    }
    
    // verify
    public static boolean verify(String text, String md5){
        //根据传入的密钥进行验证
        String md5Text = getMD5(text);
        if(md5Text.equalsIgnoreCase(md5)){
            return true;
        }
        return false;
    }
    
    // 密码加盐处理 ,后续添加
    private static String getNum2Salt() {
        int x;//定义两变量
        Random ne=new Random();//实例化一个random的对象ne
        x=ne.nextInt(9999-1000+1)+1000;//为变量赋随机值1000-9999
        return x+"";
    }
}
